home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue41 / Patterns / HVTimeKeeper2.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-11-18  |  1.2 KB  |  65 lines

  1. unit HVTimeKeeper2;
  2.  
  3. interface
  4.  
  5. uses
  6.   HVSingleton;
  7.  
  8. type
  9.   TTimeKeeper = class(TSingleton)
  10.   private
  11.     function GetTime: TDateTime;
  12.     function GetDate: TDateTime;
  13.     function GetNow: TDateTime;
  14.   public
  15.     class function Instance: TTimeKeeper;
  16.     property Time: TDateTime read GetTime;
  17.     property Date: TDateTime read GetDate;
  18.     property Now: TDateTime read GetNow;
  19.   end;
  20.  
  21. function TimeKeeper: TTimeKeeper;
  22.  
  23. implementation
  24.  
  25. uses
  26.   SysUtils;
  27.  
  28. { TTimeKeeper }
  29.  
  30. var
  31.   TimeKeeperHandle: TSingletonHandle;
  32.  
  33. class function TTimeKeeper.Instance: TTimeKeeper;
  34. // Single Instance function - create when first needed
  35. begin
  36.   Result := TTimeKeeper(InstanceOf(TimeKeeperHandle));
  37. end;
  38.  
  39. // Property access methods
  40. function TTimeKeeper.GetDate: TDateTime;
  41. begin
  42.   Result := SysUtils.Date;
  43. end;
  44.  
  45. function TTimeKeeper.GetNow: TDateTime;
  46. begin
  47.   Result := SysUtils.Now;
  48. end;
  49.  
  50. function TTimeKeeper.GetTime: TDateTime;
  51. begin
  52.   Result := SysUtils.Time;
  53. end;
  54.  
  55. // Simplified functional interface
  56.  
  57. function TimeKeeper: TTimeKeeper;
  58. begin
  59.   Result := TTimeKeeper.Instance;
  60. end;
  61.  
  62. initialization
  63.   TimeKeeperHandle := TTimeKeeper.RegisterSingletonClass(TTimeKeeper);
  64. end.
  65.